package leetcode.editor.cn;

//在一个 n x n 的矩阵 grid 中，除了在数组 mines 中给出的元素为 0，其他每个元素都为 1。mines[i] = [xi, yi]表示 
//grid[xi][yi] == 0 
//
// 返回 grid 中包含 1 的最大的 轴对齐 加号标志的阶数 。如果未找到加号标志，则返回 0 。 
//
// 一个 k 阶由 1 组成的 “轴对称”加号标志 具有中心网格 grid[r][c] == 1 ，以及4个从中心向上、向下、向左、向右延伸，长度为 k-1，
//由 1 组成的臂。注意，只有加号标志的所有网格要求为 1 ，别的网格可能为 0 也可能为 1 。 
//
// 
//
// 示例 1： 
//
// 
//
// 
//输入: n = 5, mines = [[4, 2]]
//输出: 2
//解释: 在上面的网格中，最大加号标志的阶只能是2。一个标志已在图中标出。
// 
//
// 示例 2： 
//
// 
//
// 
//输入: n = 1, mines = [[0, 0]]
//输出: 0
//解释: 没有加号标志，返回 0 。
// 
//
// 
//
// 提示： 
//
// 
// 1 <= n <= 500 
// 1 <= mines.length <= 5000 
// 0 <= xi, yi < n 
// 每一对 (xi, yi) 都 不重复 
// 
//
// Related Topics 数组 动态规划 👍 175 👎 0

//Java：【764】 - 最大加号标志
public class LeetCode_764_LargestPlusSign{
    public static void main(String[] args) {
        Solution solution = new LeetCode_764_LargestPlusSign().new Solution();
                // TO TEST
        solution.orderOfLargestPlusSign(5, new int[][]{{4,2}});
    }
    
    //leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public int orderOfLargestPlusSign(int n, int[][] mines) {
        int ans =0;
        int[][] grid = new int[n][n];
        for(int[] mine : mines){
            grid[mine[0]][mine[1]] = 1;
        }
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                int len = 0;
                while(i-len>=0 && i+len<n && j-len>=0 && j+len<n ){
                    if(grid[i][j-len] == 1 || grid[i][j+len] ==1 || grid[i-len][j]==1 || grid[i+len][j] ==1)
                        break;

                    len++;
                }
                System.out.println(i +" " + j + " " + (len));
                ans = Math.max(ans,len);
            }


        }
        return ans;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}
